// Copyright (C) 2018-2023 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//

#include <gtest/gtest.h>

#include "common_test_utils/test_common.hpp"
#include "openvino/runtime/system_conf.hpp"
#include "os/cpu_map_info.hpp"

using namespace testing;
using namespace ov;

namespace {

#ifdef __linux__

struct LinuxCpuMapTestCase {
    int _processors;
    int _numa_nodes;
    int _sockets;
    int _cores;
    std::vector<std::vector<int>> _proc_type_table;
    std::vector<std::vector<int>> _cpu_mapping_table;
    std::vector<std::vector<std::string>> system_info_table;
    std::vector<std::string> node_info_table;
};

class LinuxCpuMapFreqParserTests : public ov::test::TestsCommon,
                                   public testing::WithParamInterface<std::tuple<LinuxCpuMapTestCase>> {
public:
    void SetUp() override {
        const auto& test_data = std::get<0>(GetParam());

        int test_processors = 0;
        int test_numa_nodes = 0;
        int test_sockets = 0;
        int test_cores = 0;
        std::vector<std::vector<int>> test_proc_type_table;
        std::vector<std::vector<int>> test_cpu_mapping_table;

        ov::parse_freq_info_linux(test_data.system_info_table,
                                  test_data.node_info_table,
                                  test_processors,
                                  test_numa_nodes,
                                  test_sockets,
                                  test_cores,
                                  test_proc_type_table,
                                  test_cpu_mapping_table);

        ASSERT_EQ(test_data._processors, test_processors);
        ASSERT_EQ(test_data._numa_nodes, test_numa_nodes);
        ASSERT_EQ(test_data._sockets, test_sockets);
        ASSERT_EQ(test_data._cores, test_cores);
        ASSERT_EQ(test_data._proc_type_table, test_proc_type_table);
        ASSERT_EQ(test_data._cpu_mapping_table, test_cpu_mapping_table);
    }
};

LinuxCpuMapTestCase freq_2sockets_112cores_hyperthreading = {
    224,  // param[expected out]: total 224 logcial processors on this simulated platform
    2,    // param[expected out]: total 2 numa nodes on this simulated platform
    2,    // param[expected out]: total 2 sockets on this simulated platform
    112,  // param[expected out]: total 112 CPU cores on this simulated platform
    {{224, 112, 0, 112, -1, -1},
     {112, 56, 0, 56, 0, 0},
     {112, 56, 0, 56, 1, 1}},  // param[expected out]: The proc_type_table of this simulated platform
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},       {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},       {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},       {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},       {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},       {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 0, 0, 10, HYPER_THREADING_PROC, 10, -1},    {11, 0, 0, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 0, 0, 12, HYPER_THREADING_PROC, 12, -1},    {13, 0, 0, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 0, 0, 14, HYPER_THREADING_PROC, 14, -1},    {15, 0, 0, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 0, 0, 16, HYPER_THREADING_PROC, 16, -1},    {17, 0, 0, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 0, 0, 18, HYPER_THREADING_PROC, 18, -1},    {19, 0, 0, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 20, HYPER_THREADING_PROC, 20, -1},    {21, 0, 0, 21, HYPER_THREADING_PROC, 21, -1},
        {22, 0, 0, 22, HYPER_THREADING_PROC, 22, -1},    {23, 0, 0, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 0, 0, 24, HYPER_THREADING_PROC, 24, -1},    {25, 0, 0, 25, HYPER_THREADING_PROC, 25, -1},
        {26, 0, 0, 26, HYPER_THREADING_PROC, 26, -1},    {27, 0, 0, 27, HYPER_THREADING_PROC, 27, -1},
        {28, 0, 0, 28, HYPER_THREADING_PROC, 28, -1},    {29, 0, 0, 29, HYPER_THREADING_PROC, 29, -1},
        {30, 0, 0, 30, HYPER_THREADING_PROC, 30, -1},    {31, 0, 0, 31, HYPER_THREADING_PROC, 31, -1},
        {32, 0, 0, 32, HYPER_THREADING_PROC, 32, -1},    {33, 0, 0, 33, HYPER_THREADING_PROC, 33, -1},
        {34, 0, 0, 34, HYPER_THREADING_PROC, 34, -1},    {35, 0, 0, 35, HYPER_THREADING_PROC, 35, -1},
        {36, 0, 0, 36, HYPER_THREADING_PROC, 36, -1},    {37, 0, 0, 37, HYPER_THREADING_PROC, 37, -1},
        {38, 0, 0, 38, HYPER_THREADING_PROC, 38, -1},    {39, 0, 0, 39, HYPER_THREADING_PROC, 39, -1},
        {40, 0, 0, 40, HYPER_THREADING_PROC, 40, -1},    {41, 0, 0, 41, HYPER_THREADING_PROC, 41, -1},
        {42, 0, 0, 42, HYPER_THREADING_PROC, 42, -1},    {43, 0, 0, 43, HYPER_THREADING_PROC, 43, -1},
        {44, 0, 0, 44, HYPER_THREADING_PROC, 44, -1},    {45, 0, 0, 45, HYPER_THREADING_PROC, 45, -1},
        {46, 0, 0, 46, HYPER_THREADING_PROC, 46, -1},    {47, 0, 0, 47, HYPER_THREADING_PROC, 47, -1},
        {48, 0, 0, 48, HYPER_THREADING_PROC, 48, -1},    {49, 0, 0, 49, HYPER_THREADING_PROC, 49, -1},
        {50, 0, 0, 50, HYPER_THREADING_PROC, 50, -1},    {51, 0, 0, 51, HYPER_THREADING_PROC, 51, -1},
        {52, 0, 0, 52, HYPER_THREADING_PROC, 52, -1},    {53, 0, 0, 53, HYPER_THREADING_PROC, 53, -1},
        {54, 0, 0, 54, HYPER_THREADING_PROC, 54, -1},    {55, 0, 0, 55, HYPER_THREADING_PROC, 55, -1},
        {56, 1, 1, 56, HYPER_THREADING_PROC, 56, -1},    {57, 1, 1, 57, HYPER_THREADING_PROC, 57, -1},
        {58, 1, 1, 58, HYPER_THREADING_PROC, 58, -1},    {59, 1, 1, 59, HYPER_THREADING_PROC, 59, -1},
        {60, 1, 1, 60, HYPER_THREADING_PROC, 60, -1},    {61, 1, 1, 61, HYPER_THREADING_PROC, 61, -1},
        {62, 1, 1, 62, HYPER_THREADING_PROC, 62, -1},    {63, 1, 1, 63, HYPER_THREADING_PROC, 63, -1},
        {64, 1, 1, 64, HYPER_THREADING_PROC, 64, -1},    {65, 1, 1, 65, HYPER_THREADING_PROC, 65, -1},
        {66, 1, 1, 66, HYPER_THREADING_PROC, 66, -1},    {67, 1, 1, 67, HYPER_THREADING_PROC, 67, -1},
        {68, 1, 1, 68, HYPER_THREADING_PROC, 68, -1},    {69, 1, 1, 69, HYPER_THREADING_PROC, 69, -1},
        {70, 1, 1, 70, HYPER_THREADING_PROC, 70, -1},    {71, 1, 1, 71, HYPER_THREADING_PROC, 71, -1},
        {72, 1, 1, 72, HYPER_THREADING_PROC, 72, -1},    {73, 1, 1, 73, HYPER_THREADING_PROC, 73, -1},
        {74, 1, 1, 74, HYPER_THREADING_PROC, 74, -1},    {75, 1, 1, 75, HYPER_THREADING_PROC, 75, -1},
        {76, 1, 1, 76, HYPER_THREADING_PROC, 76, -1},    {77, 1, 1, 77, HYPER_THREADING_PROC, 77, -1},
        {78, 1, 1, 78, HYPER_THREADING_PROC, 78, -1},    {79, 1, 1, 79, HYPER_THREADING_PROC, 79, -1},
        {80, 1, 1, 80, HYPER_THREADING_PROC, 80, -1},    {81, 1, 1, 81, HYPER_THREADING_PROC, 81, -1},
        {82, 1, 1, 82, HYPER_THREADING_PROC, 82, -1},    {83, 1, 1, 83, HYPER_THREADING_PROC, 83, -1},
        {84, 1, 1, 84, HYPER_THREADING_PROC, 84, -1},    {85, 1, 1, 85, HYPER_THREADING_PROC, 85, -1},
        {86, 1, 1, 86, HYPER_THREADING_PROC, 86, -1},    {87, 1, 1, 87, HYPER_THREADING_PROC, 87, -1},
        {88, 1, 1, 88, HYPER_THREADING_PROC, 88, -1},    {89, 1, 1, 89, HYPER_THREADING_PROC, 89, -1},
        {90, 1, 1, 90, HYPER_THREADING_PROC, 90, -1},    {91, 1, 1, 91, HYPER_THREADING_PROC, 91, -1},
        {92, 1, 1, 92, HYPER_THREADING_PROC, 92, -1},    {93, 1, 1, 93, HYPER_THREADING_PROC, 93, -1},
        {94, 1, 1, 94, HYPER_THREADING_PROC, 94, -1},    {95, 1, 1, 95, HYPER_THREADING_PROC, 95, -1},
        {96, 1, 1, 96, HYPER_THREADING_PROC, 96, -1},    {97, 1, 1, 97, HYPER_THREADING_PROC, 97, -1},
        {98, 1, 1, 98, HYPER_THREADING_PROC, 98, -1},    {99, 1, 1, 99, HYPER_THREADING_PROC, 99, -1},
        {100, 1, 1, 100, HYPER_THREADING_PROC, 100, -1}, {101, 1, 1, 101, HYPER_THREADING_PROC, 101, -1},
        {102, 1, 1, 102, HYPER_THREADING_PROC, 102, -1}, {103, 1, 1, 103, HYPER_THREADING_PROC, 103, -1},
        {104, 1, 1, 104, HYPER_THREADING_PROC, 104, -1}, {105, 1, 1, 105, HYPER_THREADING_PROC, 105, -1},
        {106, 1, 1, 106, HYPER_THREADING_PROC, 106, -1}, {107, 1, 1, 107, HYPER_THREADING_PROC, 107, -1},
        {108, 1, 1, 108, HYPER_THREADING_PROC, 108, -1}, {109, 1, 1, 109, HYPER_THREADING_PROC, 109, -1},
        {110, 1, 1, 110, HYPER_THREADING_PROC, 110, -1}, {111, 1, 1, 111, HYPER_THREADING_PROC, 111, -1},
        {112, 0, 0, 0, MAIN_CORE_PROC, 0, -1},           {113, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {114, 0, 0, 2, MAIN_CORE_PROC, 2, -1},           {115, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {116, 0, 0, 4, MAIN_CORE_PROC, 4, -1},           {117, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {118, 0, 0, 6, MAIN_CORE_PROC, 6, -1},           {119, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {120, 0, 0, 8, MAIN_CORE_PROC, 8, -1},           {121, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {122, 0, 0, 10, MAIN_CORE_PROC, 10, -1},         {123, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {124, 0, 0, 12, MAIN_CORE_PROC, 12, -1},         {125, 0, 0, 13, MAIN_CORE_PROC, 13, -1},
        {126, 0, 0, 14, MAIN_CORE_PROC, 14, -1},         {127, 0, 0, 15, MAIN_CORE_PROC, 15, -1},
        {128, 0, 0, 16, MAIN_CORE_PROC, 16, -1},         {129, 0, 0, 17, MAIN_CORE_PROC, 17, -1},
        {130, 0, 0, 18, MAIN_CORE_PROC, 18, -1},         {131, 0, 0, 19, MAIN_CORE_PROC, 19, -1},
        {132, 0, 0, 20, MAIN_CORE_PROC, 20, -1},         {133, 0, 0, 21, MAIN_CORE_PROC, 21, -1},
        {134, 0, 0, 22, MAIN_CORE_PROC, 22, -1},         {135, 0, 0, 23, MAIN_CORE_PROC, 23, -1},
        {136, 0, 0, 24, MAIN_CORE_PROC, 24, -1},         {137, 0, 0, 25, MAIN_CORE_PROC, 25, -1},
        {138, 0, 0, 26, MAIN_CORE_PROC, 26, -1},         {139, 0, 0, 27, MAIN_CORE_PROC, 27, -1},
        {140, 0, 0, 28, MAIN_CORE_PROC, 28, -1},         {141, 0, 0, 29, MAIN_CORE_PROC, 29, -1},
        {142, 0, 0, 30, MAIN_CORE_PROC, 30, -1},         {143, 0, 0, 31, MAIN_CORE_PROC, 31, -1},
        {144, 0, 0, 32, MAIN_CORE_PROC, 32, -1},         {145, 0, 0, 33, MAIN_CORE_PROC, 33, -1},
        {146, 0, 0, 34, MAIN_CORE_PROC, 34, -1},         {147, 0, 0, 35, MAIN_CORE_PROC, 35, -1},
        {148, 0, 0, 36, MAIN_CORE_PROC, 36, -1},         {149, 0, 0, 37, MAIN_CORE_PROC, 37, -1},
        {150, 0, 0, 38, MAIN_CORE_PROC, 38, -1},         {151, 0, 0, 39, MAIN_CORE_PROC, 39, -1},
        {152, 0, 0, 40, MAIN_CORE_PROC, 40, -1},         {153, 0, 0, 41, MAIN_CORE_PROC, 41, -1},
        {154, 0, 0, 42, MAIN_CORE_PROC, 42, -1},         {155, 0, 0, 43, MAIN_CORE_PROC, 43, -1},
        {156, 0, 0, 44, MAIN_CORE_PROC, 44, -1},         {157, 0, 0, 45, MAIN_CORE_PROC, 45, -1},
        {158, 0, 0, 46, MAIN_CORE_PROC, 46, -1},         {159, 0, 0, 47, MAIN_CORE_PROC, 47, -1},
        {160, 0, 0, 48, MAIN_CORE_PROC, 48, -1},         {161, 0, 0, 49, MAIN_CORE_PROC, 49, -1},
        {162, 0, 0, 50, MAIN_CORE_PROC, 50, -1},         {163, 0, 0, 51, MAIN_CORE_PROC, 51, -1},
        {164, 0, 0, 52, MAIN_CORE_PROC, 52, -1},         {165, 0, 0, 53, MAIN_CORE_PROC, 53, -1},
        {166, 0, 0, 54, MAIN_CORE_PROC, 54, -1},         {167, 0, 0, 55, MAIN_CORE_PROC, 55, -1},
        {168, 1, 1, 56, MAIN_CORE_PROC, 56, -1},         {169, 1, 1, 57, MAIN_CORE_PROC, 57, -1},
        {170, 1, 1, 58, MAIN_CORE_PROC, 58, -1},         {171, 1, 1, 59, MAIN_CORE_PROC, 59, -1},
        {172, 1, 1, 60, MAIN_CORE_PROC, 60, -1},         {173, 1, 1, 61, MAIN_CORE_PROC, 61, -1},
        {174, 1, 1, 62, MAIN_CORE_PROC, 62, -1},         {175, 1, 1, 63, MAIN_CORE_PROC, 63, -1},
        {176, 1, 1, 64, MAIN_CORE_PROC, 64, -1},         {177, 1, 1, 65, MAIN_CORE_PROC, 65, -1},
        {178, 1, 1, 66, MAIN_CORE_PROC, 66, -1},         {179, 1, 1, 67, MAIN_CORE_PROC, 67, -1},
        {180, 1, 1, 68, MAIN_CORE_PROC, 68, -1},         {181, 1, 1, 69, MAIN_CORE_PROC, 69, -1},
        {182, 1, 1, 70, MAIN_CORE_PROC, 70, -1},         {183, 1, 1, 71, MAIN_CORE_PROC, 71, -1},
        {184, 1, 1, 72, MAIN_CORE_PROC, 72, -1},         {185, 1, 1, 73, MAIN_CORE_PROC, 73, -1},
        {186, 1, 1, 74, MAIN_CORE_PROC, 74, -1},         {187, 1, 1, 75, MAIN_CORE_PROC, 75, -1},
        {188, 1, 1, 76, MAIN_CORE_PROC, 76, -1},         {189, 1, 1, 77, MAIN_CORE_PROC, 77, -1},
        {190, 1, 1, 78, MAIN_CORE_PROC, 78, -1},         {191, 1, 1, 79, MAIN_CORE_PROC, 79, -1},
        {192, 1, 1, 80, MAIN_CORE_PROC, 80, -1},         {193, 1, 1, 81, MAIN_CORE_PROC, 81, -1},
        {194, 1, 1, 82, MAIN_CORE_PROC, 82, -1},         {195, 1, 1, 83, MAIN_CORE_PROC, 83, -1},
        {196, 1, 1, 84, MAIN_CORE_PROC, 84, -1},         {197, 1, 1, 85, MAIN_CORE_PROC, 85, -1},
        {198, 1, 1, 86, MAIN_CORE_PROC, 86, -1},         {199, 1, 1, 87, MAIN_CORE_PROC, 87, -1},
        {200, 1, 1, 88, MAIN_CORE_PROC, 88, -1},         {201, 1, 1, 89, MAIN_CORE_PROC, 89, -1},
        {202, 1, 1, 90, MAIN_CORE_PROC, 90, -1},         {203, 1, 1, 91, MAIN_CORE_PROC, 91, -1},
        {204, 1, 1, 92, MAIN_CORE_PROC, 92, -1},         {205, 1, 1, 93, MAIN_CORE_PROC, 93, -1},
        {206, 1, 1, 94, MAIN_CORE_PROC, 94, -1},         {207, 1, 1, 95, MAIN_CORE_PROC, 95, -1},
        {208, 1, 1, 96, MAIN_CORE_PROC, 96, -1},         {209, 1, 1, 97, MAIN_CORE_PROC, 97, -1},
        {210, 1, 1, 98, MAIN_CORE_PROC, 98, -1},         {211, 1, 1, 99, MAIN_CORE_PROC, 99, -1},
        {212, 1, 1, 100, MAIN_CORE_PROC, 100, -1},       {213, 1, 1, 101, MAIN_CORE_PROC, 101, -1},
        {214, 1, 1, 102, MAIN_CORE_PROC, 102, -1},       {215, 1, 1, 103, MAIN_CORE_PROC, 103, -1},
        {216, 1, 1, 104, MAIN_CORE_PROC, 104, -1},       {217, 1, 1, 105, MAIN_CORE_PROC, 105, -1},
        {218, 1, 1, 106, MAIN_CORE_PROC, 106, -1},       {219, 1, 1, 107, MAIN_CORE_PROC, 107, -1},
        {220, 1, 1, 108, MAIN_CORE_PROC, 108, -1},       {221, 1, 1, 109, MAIN_CORE_PROC, 109, -1},
        {222, 1, 1, 110, MAIN_CORE_PROC, 110, -1},       {223, 1, 1, 111, MAIN_CORE_PROC, 111, -1},
    },  // param[expected out]: The cpu_mapping_table of this simulated platform
    {
        {"0,112", "0", "2001000"},   {"1,113", "0", "2001000"},   {"2,114", "0", "2001000"},
        {"3,115", "0", "2001000"},   {"4,116", "0", "2001000"},   {"5,117", "0", "2001000"},
        {"6,118", "0", "2001000"},   {"7,119", "0", "2001000"},   {"8,120", "0", "2001000"},
        {"9,121", "0", "2001000"},   {"10,122", "0", "2001000"},  {"11,123", "0", "2001000"},
        {"12,124", "0", "2001000"},  {"13,125", "0", "2001000"},  {"14,126", "0", "2001000"},
        {"15,127", "0", "2001000"},  {"16,128", "0", "2001000"},  {"17,129", "0", "2001000"},
        {"18,130", "0", "2001000"},  {"19,131", "0", "2001000"},  {"20,132", "0", "2001000"},
        {"21,133", "0", "2001000"},  {"22,134", "0", "2001000"},  {"23,135", "0", "2001000"},
        {"24,136", "0", "2001000"},  {"25,137", "0", "2001000"},  {"26,138", "0", "2001000"},
        {"27,139", "0", "2001000"},  {"28,140", "0", "2001000"},  {"29,141", "0", "2001000"},
        {"30,142", "0", "2001000"},  {"31,143", "0", "2001000"},  {"32,144", "0", "2001000"},
        {"33,145", "0", "2001000"},  {"34,146", "0", "2001000"},  {"35,147", "0", "2001000"},
        {"36,148", "0", "2001000"},  {"37,149", "0", "2001000"},  {"38,150", "0", "2001000"},
        {"39,151", "0", "2001000"},  {"40,152", "0", "2001000"},  {"41,153", "0", "2001000"},
        {"42,154", "0", "2001000"},  {"43,155", "0", "2001000"},  {"44,156", "0", "2001000"},
        {"45,157", "0", "2001000"},  {"46,158", "0", "2001000"},  {"47,159", "0", "2001000"},
        {"48,160", "0", "2001000"},  {"49,161", "0", "2001000"},  {"50,162", "0", "2001000"},
        {"51,163", "0", "2001000"},  {"52,164", "0", "2001000"},  {"53,165", "0", "2001000"},
        {"54,166", "0", "2001000"},  {"55,167", "0", "2001000"},  {"56,168", "1", "2001000"},
        {"57,169", "1", "2001000"},  {"58,170", "1", "2001000"},  {"59,171", "1", "2001000"},
        {"60,172", "1", "2001000"},  {"61,173", "1", "2001000"},  {"62,174", "1", "2001000"},
        {"63,175", "1", "2001000"},  {"64,176", "1", "2001000"},  {"65,177", "1", "2001000"},
        {"66,178", "1", "2001000"},  {"67,179", "1", "2001000"},  {"68,180", "1", "2001000"},
        {"69,181", "1", "2001000"},  {"70,182", "1", "2001000"},  {"71,183", "1", "2001000"},
        {"72,184", "1", "2001000"},  {"73,185", "1", "2001000"},  {"74,186", "1", "2001000"},
        {"75,187", "1", "2001000"},  {"76,188", "1", "2001000"},  {"77,189", "1", "2001000"},
        {"78,190", "1", "2001000"},  {"79,191", "1", "2001000"},  {"80,192", "1", "2001000"},
        {"81,193", "1", "2001000"},  {"82,194", "1", "2001000"},  {"83,195", "1", "2001000"},
        {"84,196", "1", "2001000"},  {"85,197", "1", "2001000"},  {"86,198", "1", "2001000"},
        {"87,199", "1", "2001000"},  {"88,200", "1", "2001000"},  {"89,201", "1", "2001000"},
        {"90,202", "1", "2001000"},  {"91,203", "1", "2001000"},  {"92,204", "1", "2001000"},
        {"93,205", "1", "2001000"},  {"94,206", "1", "2001000"},  {"95,207", "1", "2001000"},
        {"96,208", "1", "2001000"},  {"97,209", "1", "2001000"},  {"98,210", "1", "2001000"},
        {"99,211", "1", "2001000"},  {"100,212", "1", "2001000"}, {"101,213", "1", "2001000"},
        {"102,214", "1", "2001000"}, {"103,215", "1", "2001000"}, {"104,216", "1", "2001000"},
        {"105,217", "1", "2001000"}, {"106,218", "1", "2001000"}, {"107,219", "1", "2001000"},
        {"108,220", "1", "2001000"}, {"109,221", "1", "2001000"}, {"110,222", "1", "2001000"},
        {"111,223", "1", "2001000"}, {"0,112", "0", "2001000"},   {"1,113", "0", "2001000"},
        {"2,114", "0", "2001000"},   {"3,115", "0", "2001000"},   {"4,116", "0", "2001000"},
        {"5,117", "0", "2001000"},   {"6,118", "0", "2001000"},   {"7,119", "0", "2001000"},
        {"8,120", "0", "2001000"},   {"9,121", "0", "2001000"},   {"10,122", "0", "2001000"},
        {"11,123", "0", "2001000"},  {"12,124", "0", "2001000"},  {"13,125", "0", "2001000"},
        {"14,126", "0", "2001000"},  {"15,127", "0", "2001000"},  {"16,128", "0", "2001000"},
        {"17,129", "0", "2001000"},  {"18,130", "0", "2001000"},  {"19,131", "0", "2001000"},
        {"20,132", "0", "2001000"},  {"21,133", "0", "2001000"},  {"22,134", "0", "2001000"},
        {"23,135", "0", "2001000"},  {"24,136", "0", "2001000"},  {"25,137", "0", "2001000"},
        {"26,138", "0", "2001000"},  {"27,139", "0", "2001000"},  {"28,140", "0", "2001000"},
        {"29,141", "0", "2001000"},  {"30,142", "0", "2001000"},  {"31,143", "0", "2001000"},
        {"32,144", "0", "2001000"},  {"33,145", "0", "2001000"},  {"34,146", "0", "2001000"},
        {"35,147", "0", "2001000"},  {"36,148", "0", "2001000"},  {"37,149", "0", "2001000"},
        {"38,150", "0", "2001000"},  {"39,151", "0", "2001000"},  {"40,152", "0", "2001000"},
        {"41,153", "0", "2001000"},  {"42,154", "0", "2001000"},  {"43,155", "0", "2001000"},
        {"44,156", "0", "2001000"},  {"45,157", "0", "2001000"},  {"46,158", "0", "2001000"},
        {"47,159", "0", "2001000"},  {"48,160", "0", "2001000"},  {"49,161", "0", "2001000"},
        {"50,162", "0", "2001000"},  {"51,163", "0", "2001000"},  {"52,164", "0", "2001000"},
        {"53,165", "0", "2001000"},  {"54,166", "0", "2001000"},  {"55,167", "0", "2001000"},
        {"56,168", "1", "2001000"},  {"57,169", "1", "2001000"},  {"58,170", "1", "2001000"},
        {"59,171", "1", "2001000"},  {"60,172", "1", "2001000"},  {"61,173", "1", "2001000"},
        {"62,174", "1", "2001000"},  {"63,175", "1", "2001000"},  {"64,176", "1", "2001000"},
        {"65,177", "1", "2001000"},  {"66,178", "1", "2001000"},  {"67,179", "1", "2001000"},
        {"68,180", "1", "2001000"},  {"69,181", "1", "2001000"},  {"70,182", "1", "2001000"},
        {"71,183", "1", "2001000"},  {"72,184", "1", "2001000"},  {"73,185", "1", "2001000"},
        {"74,186", "1", "2001000"},  {"75,187", "1", "2001000"},  {"76,188", "1", "2001000"},
        {"77,189", "1", "2001000"},  {"78,190", "1", "2001000"},  {"79,191", "1", "2001000"},
        {"80,192", "1", "2001000"},  {"81,193", "1", "2001000"},  {"82,194", "1", "2001000"},
        {"83,195", "1", "2001000"},  {"84,196", "1", "2001000"},  {"85,197", "1", "2001000"},
        {"86,198", "1", "2001000"},  {"87,199", "1", "2001000"},  {"88,200", "1", "2001000"},
        {"89,201", "1", "2001000"},  {"90,202", "1", "2001000"},  {"91,203", "1", "2001000"},
        {"92,204", "1", "2001000"},  {"93,205", "1", "2001000"},  {"94,206", "1", "2001000"},
        {"95,207", "1", "2001000"},  {"96,208", "1", "2001000"},  {"97,209", "1", "2001000"},
        {"98,210", "1", "2001000"},  {"99,211", "1", "2001000"},  {"100,212", "1", "2001000"},
        {"101,213", "1", "2001000"}, {"102,214", "1", "2001000"}, {"103,215", "1", "2001000"},
        {"104,216", "1", "2001000"}, {"105,217", "1", "2001000"}, {"106,218", "1", "2001000"},
        {"107,219", "1", "2001000"}, {"108,220", "1", "2001000"}, {"109,221", "1", "2001000"},
        {"110,222", "1", "2001000"}, {"111,223", "1", "2001000"},
    },  // param[in]: The CPU frequency information table of this simulated platform
    {{"0-55,112-167"}, {"56-111,168-223"}},  // param[in]: The numa node information table of this simulated platform
};
LinuxCpuMapTestCase freq_2sockets_48cores_hyperthreading = {
    96,
    2,
    2,
    48,
    {{96, 48, 0, 48, -1, -1}, {48, 24, 0, 24, 0, 0}, {48, 24, 0, 24, 1, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 0, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 0, 0, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 0, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 0, 0, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 0, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 0, 0, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 0, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 0, 0, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 0, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 0, 0, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 0, 0, 21, HYPER_THREADING_PROC, 21, -1},
        {22, 0, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 0, 0, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 1, 1, 24, HYPER_THREADING_PROC, 24, -1}, {25, 1, 1, 25, HYPER_THREADING_PROC, 25, -1},
        {26, 1, 1, 26, HYPER_THREADING_PROC, 26, -1}, {27, 1, 1, 27, HYPER_THREADING_PROC, 27, -1},
        {28, 1, 1, 28, HYPER_THREADING_PROC, 28, -1}, {29, 1, 1, 29, HYPER_THREADING_PROC, 29, -1},
        {30, 1, 1, 30, HYPER_THREADING_PROC, 30, -1}, {31, 1, 1, 31, HYPER_THREADING_PROC, 31, -1},
        {32, 1, 1, 32, HYPER_THREADING_PROC, 32, -1}, {33, 1, 1, 33, HYPER_THREADING_PROC, 33, -1},
        {34, 1, 1, 34, HYPER_THREADING_PROC, 34, -1}, {35, 1, 1, 35, HYPER_THREADING_PROC, 35, -1},
        {36, 1, 1, 36, HYPER_THREADING_PROC, 36, -1}, {37, 1, 1, 37, HYPER_THREADING_PROC, 37, -1},
        {38, 1, 1, 38, HYPER_THREADING_PROC, 38, -1}, {39, 1, 1, 39, HYPER_THREADING_PROC, 39, -1},
        {40, 1, 1, 40, HYPER_THREADING_PROC, 40, -1}, {41, 1, 1, 41, HYPER_THREADING_PROC, 41, -1},
        {42, 1, 1, 42, HYPER_THREADING_PROC, 42, -1}, {43, 1, 1, 43, HYPER_THREADING_PROC, 43, -1},
        {44, 1, 1, 44, HYPER_THREADING_PROC, 44, -1}, {45, 1, 1, 45, HYPER_THREADING_PROC, 45, -1},
        {46, 1, 1, 46, HYPER_THREADING_PROC, 46, -1}, {47, 1, 1, 47, HYPER_THREADING_PROC, 47, -1},
        {48, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {49, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {50, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {51, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {52, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {53, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {54, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {55, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {56, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {57, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {58, 0, 0, 10, MAIN_CORE_PROC, 10, -1},       {59, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {60, 0, 0, 12, MAIN_CORE_PROC, 12, -1},       {61, 0, 0, 13, MAIN_CORE_PROC, 13, -1},
        {62, 0, 0, 14, MAIN_CORE_PROC, 14, -1},       {63, 0, 0, 15, MAIN_CORE_PROC, 15, -1},
        {64, 0, 0, 16, MAIN_CORE_PROC, 16, -1},       {65, 0, 0, 17, MAIN_CORE_PROC, 17, -1},
        {66, 0, 0, 18, MAIN_CORE_PROC, 18, -1},       {67, 0, 0, 19, MAIN_CORE_PROC, 19, -1},
        {68, 0, 0, 20, MAIN_CORE_PROC, 20, -1},       {69, 0, 0, 21, MAIN_CORE_PROC, 21, -1},
        {70, 0, 0, 22, MAIN_CORE_PROC, 22, -1},       {71, 0, 0, 23, MAIN_CORE_PROC, 23, -1},
        {72, 1, 1, 24, MAIN_CORE_PROC, 24, -1},       {73, 1, 1, 25, MAIN_CORE_PROC, 25, -1},
        {74, 1, 1, 26, MAIN_CORE_PROC, 26, -1},       {75, 1, 1, 27, MAIN_CORE_PROC, 27, -1},
        {76, 1, 1, 28, MAIN_CORE_PROC, 28, -1},       {77, 1, 1, 29, MAIN_CORE_PROC, 29, -1},
        {78, 1, 1, 30, MAIN_CORE_PROC, 30, -1},       {79, 1, 1, 31, MAIN_CORE_PROC, 31, -1},
        {80, 1, 1, 32, MAIN_CORE_PROC, 32, -1},       {81, 1, 1, 33, MAIN_CORE_PROC, 33, -1},
        {82, 1, 1, 34, MAIN_CORE_PROC, 34, -1},       {83, 1, 1, 35, MAIN_CORE_PROC, 35, -1},
        {84, 1, 1, 36, MAIN_CORE_PROC, 36, -1},       {85, 1, 1, 37, MAIN_CORE_PROC, 37, -1},
        {86, 1, 1, 38, MAIN_CORE_PROC, 38, -1},       {87, 1, 1, 39, MAIN_CORE_PROC, 39, -1},
        {88, 1, 1, 40, MAIN_CORE_PROC, 40, -1},       {89, 1, 1, 41, MAIN_CORE_PROC, 41, -1},
        {90, 1, 1, 42, MAIN_CORE_PROC, 42, -1},       {91, 1, 1, 43, MAIN_CORE_PROC, 43, -1},
        {92, 1, 1, 44, MAIN_CORE_PROC, 44, -1},       {93, 1, 1, 45, MAIN_CORE_PROC, 45, -1},
        {94, 1, 1, 46, MAIN_CORE_PROC, 46, -1},       {95, 1, 1, 47, MAIN_CORE_PROC, 47, -1},
    },
    {
        {"0,48", "0", "3600000"},  {"1,49", "0", "3600000"},  {"2,50", "0", "3600000"},  {"3,51", "0", "3600000"},
        {"4,52", "0", "3600000"},  {"5,53", "0", "3600000"},  {"6,54", "0", "3600000"},  {"7,55", "0", "3600000"},
        {"8,56", "0", "3600000"},  {"9,57", "0", "3600000"},  {"10,58", "0", "3600000"}, {"11,59", "0", "3600000"},
        {"12,60", "0", "3600000"}, {"13,61", "0", "3600000"}, {"14,62", "0", "3600000"}, {"15,63", "0", "3600000"},
        {"16,64", "0", "3600000"}, {"17,65", "0", "3600000"}, {"18,66", "0", "3600000"}, {"19,67", "0", "3600000"},
        {"20,68", "0", "3600000"}, {"21,69", "0", "3600000"}, {"22,70", "0", "3600000"}, {"23,71", "0", "3600000"},
        {"24,72", "1", "3600000"}, {"25,73", "1", "3600000"}, {"26,74", "1", "3600000"}, {"27,75", "1", "3600000"},
        {"28,76", "1", "3600000"}, {"29,77", "1", "3600000"}, {"30,78", "1", "3600000"}, {"31,79", "1", "3600000"},
        {"32,80", "1", "3600000"}, {"33,81", "1", "3600000"}, {"34,82", "1", "3600000"}, {"35,83", "1", "3600000"},
        {"36,84", "1", "3600000"}, {"37,85", "1", "3600000"}, {"38,86", "1", "3600000"}, {"39,87", "1", "3600000"},
        {"40,88", "1", "3600000"}, {"41,89", "1", "3600000"}, {"42,90", "1", "3600000"}, {"43,91", "1", "3600000"},
        {"44,92", "1", "3600000"}, {"45,93", "1", "3600000"}, {"46,94", "1", "3600000"}, {"47,95", "1", "3600000"},
        {"0,48", "0", "3600000"},  {"1,49", "0", "3600000"},  {"2,50", "0", "3600000"},  {"3,51", "0", "3600000"},
        {"4,52", "0", "3600000"},  {"5,53", "0", "3600000"},  {"6,54", "0", "3600000"},  {"7,55", "0", "3600000"},
        {"8,56", "0", "3600000"},  {"9,57", "0", "3600000"},  {"10,58", "0", "3600000"}, {"11,59", "0", "3600000"},
        {"12,60", "0", "3600000"}, {"13,61", "0", "3600000"}, {"14,62", "0", "3600000"}, {"15,63", "0", "3600000"},
        {"16,64", "0", "3600000"}, {"17,65", "0", "3600000"}, {"18,66", "0", "3600000"}, {"19,67", "0", "3600000"},
        {"20,68", "0", "3600000"}, {"21,69", "0", "3600000"}, {"22,70", "0", "3600000"}, {"23,71", "0", "3600000"},
        {"24,72", "1", "3600000"}, {"25,73", "1", "3600000"}, {"26,74", "1", "3600000"}, {"27,75", "1", "3600000"},
        {"28,76", "1", "3600000"}, {"29,77", "1", "3600000"}, {"30,78", "1", "3600000"}, {"31,79", "1", "3600000"},
        {"32,80", "1", "3600000"}, {"33,81", "1", "3600000"}, {"34,82", "1", "3600000"}, {"35,83", "1", "3600000"},
        {"36,84", "1", "3600000"}, {"37,85", "1", "3600000"}, {"38,86", "1", "3600000"}, {"39,87", "1", "3600000"},
        {"40,88", "1", "3600000"}, {"41,89", "1", "3600000"}, {"42,90", "1", "3600000"}, {"43,91", "1", "3600000"},
        {"44,92", "1", "3600000"}, {"45,93", "1", "3600000"}, {"46,94", "1", "3600000"}, {"47,95", "1", "3600000"},
    },
    {
        {"0-23,48-71"},
        {"24-47,72-95"},
    },

};
LinuxCpuMapTestCase freq_2sockets_48cores_hyperthreading_1 = {
    96,
    4,
    2,
    48,
    {{96, 48, 0, 48, -1, -1},
     {24, 12, 0, 12, 0, 0},
     {24, 12, 0, 12, 1, 0},
     {24, 12, 0, 12, 2, 1},
     {24, 12, 0, 12, 3, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 0, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 0, 0, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 1, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 1, 0, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 1, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 1, 0, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 1, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 1, 0, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 1, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 1, 0, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 1, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 1, 0, 21, HYPER_THREADING_PROC, 21, -1},
        {22, 1, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 1, 0, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 2, 1, 24, HYPER_THREADING_PROC, 24, -1}, {25, 2, 1, 25, HYPER_THREADING_PROC, 25, -1},
        {26, 2, 1, 26, HYPER_THREADING_PROC, 26, -1}, {27, 2, 1, 27, HYPER_THREADING_PROC, 27, -1},
        {28, 2, 1, 28, HYPER_THREADING_PROC, 28, -1}, {29, 2, 1, 29, HYPER_THREADING_PROC, 29, -1},
        {30, 2, 1, 30, HYPER_THREADING_PROC, 30, -1}, {31, 2, 1, 31, HYPER_THREADING_PROC, 31, -1},
        {32, 2, 1, 32, HYPER_THREADING_PROC, 32, -1}, {33, 2, 1, 33, HYPER_THREADING_PROC, 33, -1},
        {34, 2, 1, 34, HYPER_THREADING_PROC, 34, -1}, {35, 2, 1, 35, HYPER_THREADING_PROC, 35, -1},
        {36, 3, 1, 36, HYPER_THREADING_PROC, 36, -1}, {37, 3, 1, 37, HYPER_THREADING_PROC, 37, -1},
        {38, 3, 1, 38, HYPER_THREADING_PROC, 38, -1}, {39, 3, 1, 39, HYPER_THREADING_PROC, 39, -1},
        {40, 3, 1, 40, HYPER_THREADING_PROC, 40, -1}, {41, 3, 1, 41, HYPER_THREADING_PROC, 41, -1},
        {42, 3, 1, 42, HYPER_THREADING_PROC, 42, -1}, {43, 3, 1, 43, HYPER_THREADING_PROC, 43, -1},
        {44, 3, 1, 44, HYPER_THREADING_PROC, 44, -1}, {45, 3, 1, 45, HYPER_THREADING_PROC, 45, -1},
        {46, 3, 1, 46, HYPER_THREADING_PROC, 46, -1}, {47, 3, 1, 47, HYPER_THREADING_PROC, 47, -1},
        {48, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {49, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {50, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {51, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {52, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {53, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {54, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {55, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {56, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {57, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {58, 0, 0, 10, MAIN_CORE_PROC, 10, -1},       {59, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {60, 1, 0, 12, MAIN_CORE_PROC, 12, -1},       {61, 1, 0, 13, MAIN_CORE_PROC, 13, -1},
        {62, 1, 0, 14, MAIN_CORE_PROC, 14, -1},       {63, 1, 0, 15, MAIN_CORE_PROC, 15, -1},
        {64, 1, 0, 16, MAIN_CORE_PROC, 16, -1},       {65, 1, 0, 17, MAIN_CORE_PROC, 17, -1},
        {66, 1, 0, 18, MAIN_CORE_PROC, 18, -1},       {67, 1, 0, 19, MAIN_CORE_PROC, 19, -1},
        {68, 1, 0, 20, MAIN_CORE_PROC, 20, -1},       {69, 1, 0, 21, MAIN_CORE_PROC, 21, -1},
        {70, 1, 0, 22, MAIN_CORE_PROC, 22, -1},       {71, 1, 0, 23, MAIN_CORE_PROC, 23, -1},
        {72, 2, 1, 24, MAIN_CORE_PROC, 24, -1},       {73, 2, 1, 25, MAIN_CORE_PROC, 25, -1},
        {74, 2, 1, 26, MAIN_CORE_PROC, 26, -1},       {75, 2, 1, 27, MAIN_CORE_PROC, 27, -1},
        {76, 2, 1, 28, MAIN_CORE_PROC, 28, -1},       {77, 2, 1, 29, MAIN_CORE_PROC, 29, -1},
        {78, 2, 1, 30, MAIN_CORE_PROC, 30, -1},       {79, 2, 1, 31, MAIN_CORE_PROC, 31, -1},
        {80, 2, 1, 32, MAIN_CORE_PROC, 32, -1},       {81, 2, 1, 33, MAIN_CORE_PROC, 33, -1},
        {82, 2, 1, 34, MAIN_CORE_PROC, 34, -1},       {83, 2, 1, 35, MAIN_CORE_PROC, 35, -1},
        {84, 3, 1, 36, MAIN_CORE_PROC, 36, -1},       {85, 3, 1, 37, MAIN_CORE_PROC, 37, -1},
        {86, 3, 1, 38, MAIN_CORE_PROC, 38, -1},       {87, 3, 1, 39, MAIN_CORE_PROC, 39, -1},
        {88, 3, 1, 40, MAIN_CORE_PROC, 40, -1},       {89, 3, 1, 41, MAIN_CORE_PROC, 41, -1},
        {90, 3, 1, 42, MAIN_CORE_PROC, 42, -1},       {91, 3, 1, 43, MAIN_CORE_PROC, 43, -1},
        {92, 3, 1, 44, MAIN_CORE_PROC, 44, -1},       {93, 3, 1, 45, MAIN_CORE_PROC, 45, -1},
        {94, 3, 1, 46, MAIN_CORE_PROC, 46, -1},       {95, 3, 1, 47, MAIN_CORE_PROC, 47, -1},
    },
    {
        {"0,48", "0", "3600000"},  {"1,49", "0", "3600000"},  {"2,50", "0", "3600000"},  {"3,51", "0", "3600000"},
        {"4,52", "0", "3600000"},  {"5,53", "0", "3600000"},  {"6,54", "0", "3600000"},  {"7,55", "0", "3600000"},
        {"8,56", "0", "3600000"},  {"9,57", "0", "3600000"},  {"10,58", "0", "3600000"}, {"11,59", "0", "3600000"},
        {"12,60", "0", "3600000"}, {"13,61", "0", "3600000"}, {"14,62", "0", "3600000"}, {"15,63", "0", "3600000"},
        {"16,64", "0", "3600000"}, {"17,65", "0", "3600000"}, {"18,66", "0", "3600000"}, {"19,67", "0", "3600000"},
        {"20,68", "0", "3600000"}, {"21,69", "0", "3600000"}, {"22,70", "0", "3600000"}, {"23,71", "0", "3600000"},
        {"24,72", "1", "3600000"}, {"25,73", "1", "3600000"}, {"26,74", "1", "3600000"}, {"27,75", "1", "3600000"},
        {"28,76", "1", "3600000"}, {"29,77", "1", "3600000"}, {"30,78", "1", "3600000"}, {"31,79", "1", "3600000"},
        {"32,80", "1", "3600000"}, {"33,81", "1", "3600000"}, {"34,82", "1", "3600000"}, {"35,83", "1", "3600000"},
        {"36,84", "1", "3600000"}, {"37,85", "1", "3600000"}, {"38,86", "1", "3600000"}, {"39,87", "1", "3600000"},
        {"40,88", "1", "3600000"}, {"41,89", "1", "3600000"}, {"42,90", "1", "3600000"}, {"43,91", "1", "3600000"},
        {"44,92", "1", "3600000"}, {"45,93", "1", "3600000"}, {"46,94", "1", "3600000"}, {"47,95", "1", "3600000"},
        {"0,48", "0", "3600000"},  {"1,49", "0", "3600000"},  {"2,50", "0", "3600000"},  {"3,51", "0", "3600000"},
        {"4,52", "0", "3600000"},  {"5,53", "0", "3600000"},  {"6,54", "0", "3600000"},  {"7,55", "0", "3600000"},
        {"8,56", "0", "3600000"},  {"9,57", "0", "3600000"},  {"10,58", "0", "3600000"}, {"11,59", "0", "3600000"},
        {"12,60", "0", "3600000"}, {"13,61", "0", "3600000"}, {"14,62", "0", "3600000"}, {"15,63", "0", "3600000"},
        {"16,64", "0", "3600000"}, {"17,65", "0", "3600000"}, {"18,66", "0", "3600000"}, {"19,67", "0", "3600000"},
        {"20,68", "0", "3600000"}, {"21,69", "0", "3600000"}, {"22,70", "0", "3600000"}, {"23,71", "0", "3600000"},
        {"24,72", "1", "3600000"}, {"25,73", "1", "3600000"}, {"26,74", "1", "3600000"}, {"27,75", "1", "3600000"},
        {"28,76", "1", "3600000"}, {"29,77", "1", "3600000"}, {"30,78", "1", "3600000"}, {"31,79", "1", "3600000"},
        {"32,80", "1", "3600000"}, {"33,81", "1", "3600000"}, {"34,82", "1", "3600000"}, {"35,83", "1", "3600000"},
        {"36,84", "1", "3600000"}, {"37,85", "1", "3600000"}, {"38,86", "1", "3600000"}, {"39,87", "1", "3600000"},
        {"40,88", "1", "3600000"}, {"41,89", "1", "3600000"}, {"42,90", "1", "3600000"}, {"43,91", "1", "3600000"},
        {"44,92", "1", "3600000"}, {"45,93", "1", "3600000"}, {"46,94", "1", "3600000"}, {"47,95", "1", "3600000"},
    },
    {
        {"0-11,48-59"},
        {"12-23,60-71"},
        {"24-35,72-83"},
        {"36-47,84-95"},
    },
};
LinuxCpuMapTestCase freq_2sockets_24cores_hyperthreading = {
    48,
    2,
    2,
    24,
    {{48, 24, 0, 24, -1, -1}, {24, 12, 0, 12, 0, 0}, {24, 12, 0, 12, 1, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 1, 1, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 1, 1, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 1, 1, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 1, 1, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 1, 1, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 0, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 1, 1, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 0, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 1, 1, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 0, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 1, 1, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 0, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 1, 1, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 0, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 1, 1, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 1, 1, 21, HYPER_THREADING_PROC, 21, -1},
        {22, 0, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 1, 1, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {25, 1, 1, 1, MAIN_CORE_PROC, 1, -1},
        {26, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {27, 1, 1, 3, MAIN_CORE_PROC, 3, -1},
        {28, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {29, 1, 1, 5, MAIN_CORE_PROC, 5, -1},
        {30, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {31, 1, 1, 7, MAIN_CORE_PROC, 7, -1},
        {32, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {33, 1, 1, 9, MAIN_CORE_PROC, 9, -1},
        {34, 0, 0, 10, MAIN_CORE_PROC, 10, -1},       {35, 1, 1, 11, MAIN_CORE_PROC, 11, -1},
        {36, 0, 0, 12, MAIN_CORE_PROC, 12, -1},       {37, 1, 1, 13, MAIN_CORE_PROC, 13, -1},
        {38, 0, 0, 14, MAIN_CORE_PROC, 14, -1},       {39, 1, 1, 15, MAIN_CORE_PROC, 15, -1},
        {40, 0, 0, 16, MAIN_CORE_PROC, 16, -1},       {41, 1, 1, 17, MAIN_CORE_PROC, 17, -1},
        {42, 0, 0, 18, MAIN_CORE_PROC, 18, -1},       {43, 1, 1, 19, MAIN_CORE_PROC, 19, -1},
        {44, 0, 0, 20, MAIN_CORE_PROC, 20, -1},       {45, 1, 1, 21, MAIN_CORE_PROC, 21, -1},
        {46, 0, 0, 22, MAIN_CORE_PROC, 22, -1},       {47, 1, 1, 23, MAIN_CORE_PROC, 23, -1},
    },
    {
        {"0,24", "0", "3500000"},  {"1,25", "1", "3500000"},  {"2,26", "0", "3500000"},  {"3,27", "1", "3500000"},
        {"4,28", "0", "3500000"},  {"5,29", "1", "3500000"},  {"6,30", "0", "3500000"},  {"7,31", "1", "3500000"},
        {"8,32", "0", "3500000"},  {"9,33", "1", "3500000"},  {"10,34", "0", "3500000"}, {"11,35", "1", "3500000"},
        {"12,36", "0", "3500000"}, {"13,37", "1", "3500000"}, {"14,38", "0", "3500000"}, {"15,39", "1", "3500000"},
        {"16,40", "0", "3500000"}, {"17,41", "1", "3500000"}, {"18,42", "0", "3500000"}, {"19,43", "1", "3500000"},
        {"20,44", "0", "3500000"}, {"21,45", "1", "3500000"}, {"22,46", "0", "3500000"}, {"23,47", "1", "3500000"},
        {"0,24", "0", "3500000"},  {"1,25", "1", "3500000"},  {"2,26", "0", "3500000"},  {"3,27", "1", "3500000"},
        {"4,28", "0", "3500000"},  {"5,29", "1", "3500000"},  {"6,30", "0", "3500000"},  {"7,31", "1", "3500000"},
        {"8,32", "0", "3500000"},  {"9,33", "1", "3500000"},  {"10,34", "0", "3500000"}, {"11,35", "1", "3500000"},
        {"12,36", "0", "3500000"}, {"13,37", "1", "3500000"}, {"14,38", "0", "3500000"}, {"15,39", "1", "3500000"},
        {"16,40", "0", "3500000"}, {"17,41", "1", "3500000"}, {"18,42", "0", "3500000"}, {"19,43", "1", "3500000"},
        {"20,44", "0", "3500000"}, {"21,45", "1", "3500000"}, {"22,46", "0", "3500000"}, {"23,47", "1", "3500000"},
    },
    {
        {"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
    },
};
LinuxCpuMapTestCase freq_2sockets_24cores_hyperthreading_1 = {
    48,
    4,
    2,
    24,
    {{48, 24, 0, 24, -1, -1}, {12, 6, 0, 6, 0, 0}, {12, 6, 0, 6, 1, 0}, {12, 6, 0, 6, 2, 1}, {12, 6, 0, 6, 3, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 2, 1, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 2, 1, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 2, 1, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 2, 1, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 2, 1, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 0, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 2, 1, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 1, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 3, 1, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 1, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 3, 1, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 1, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 3, 1, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 1, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 3, 1, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 1, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 3, 1, 21, HYPER_THREADING_PROC, 21, -1},
        {22, 1, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 3, 1, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {25, 2, 1, 1, MAIN_CORE_PROC, 1, -1},
        {26, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {27, 2, 1, 3, MAIN_CORE_PROC, 3, -1},
        {28, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {29, 2, 1, 5, MAIN_CORE_PROC, 5, -1},
        {30, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {31, 2, 1, 7, MAIN_CORE_PROC, 7, -1},
        {32, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {33, 2, 1, 9, MAIN_CORE_PROC, 9, -1},
        {34, 0, 0, 10, MAIN_CORE_PROC, 10, -1},       {35, 2, 1, 11, MAIN_CORE_PROC, 11, -1},
        {36, 1, 0, 12, MAIN_CORE_PROC, 12, -1},       {37, 3, 1, 13, MAIN_CORE_PROC, 13, -1},
        {38, 1, 0, 14, MAIN_CORE_PROC, 14, -1},       {39, 3, 1, 15, MAIN_CORE_PROC, 15, -1},
        {40, 1, 0, 16, MAIN_CORE_PROC, 16, -1},       {41, 3, 1, 17, MAIN_CORE_PROC, 17, -1},
        {42, 1, 0, 18, MAIN_CORE_PROC, 18, -1},       {43, 3, 1, 19, MAIN_CORE_PROC, 19, -1},
        {44, 1, 0, 20, MAIN_CORE_PROC, 20, -1},       {45, 3, 1, 21, MAIN_CORE_PROC, 21, -1},
        {46, 1, 0, 22, MAIN_CORE_PROC, 22, -1},       {47, 3, 1, 23, MAIN_CORE_PROC, 23, -1},
    },
    {
        {"0,24", "0", "3500000"},  {"1,25", "1", "3500000"},  {"2,26", "0", "3500000"},  {"3,27", "1", "3500000"},
        {"4,28", "0", "3500000"},  {"5,29", "1", "3500000"},  {"6,30", "0", "3500000"},  {"7,31", "1", "3500000"},
        {"8,32", "0", "3500000"},  {"9,33", "1", "3500000"},  {"10,34", "0", "3500000"}, {"11,35", "1", "3500000"},
        {"12,36", "0", "3500000"}, {"13,37", "1", "3500000"}, {"14,38", "0", "3500000"}, {"15,39", "1", "3500000"},
        {"16,40", "0", "3500000"}, {"17,41", "1", "3500000"}, {"18,42", "0", "3500000"}, {"19,43", "1", "3500000"},
        {"20,44", "0", "3500000"}, {"21,45", "1", "3500000"}, {"22,46", "0", "3500000"}, {"23,47", "1", "3500000"},
        {"0,24", "0", "3500000"},  {"1,25", "1", "3500000"},  {"2,26", "0", "3500000"},  {"3,27", "1", "3500000"},
        {"4,28", "0", "3500000"},  {"5,29", "1", "3500000"},  {"6,30", "0", "3500000"},  {"7,31", "1", "3500000"},
        {"8,32", "0", "3500000"},  {"9,33", "1", "3500000"},  {"10,34", "0", "3500000"}, {"11,35", "1", "3500000"},
        {"12,36", "0", "3500000"}, {"13,37", "1", "3500000"}, {"14,38", "0", "3500000"}, {"15,39", "1", "3500000"},
        {"16,40", "0", "3500000"}, {"17,41", "1", "3500000"}, {"18,42", "0", "3500000"}, {"19,43", "1", "3500000"},
        {"20,44", "0", "3500000"}, {"21,45", "1", "3500000"}, {"22,46", "0", "3500000"}, {"23,47", "1", "3500000"},
    },
    {
        {"0,2,4,6,8,10,24,26,28,30,32,34"},
        {"12,14,16,18,20,22,36,38,40,42,44,46"},
        {"1,3,5,7,9,11,25,27,29,31,33,35"},
        {"13,15,17,19,21,23,37,39,41,43,45,47"},
    },
};
LinuxCpuMapTestCase freq_2sockets_20cores_hyperthreading = {
    40,
    2,
    2,
    20,
    {{40, 20, 0, 20, -1, -1}, {20, 10, 0, 10, 0, 0}, {20, 10, 0, 10, 1, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 1, 1, 10, HYPER_THREADING_PROC, 10, -1}, {11, 1, 1, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 1, 1, 12, HYPER_THREADING_PROC, 12, -1}, {13, 1, 1, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 1, 1, 14, HYPER_THREADING_PROC, 14, -1}, {15, 1, 1, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 1, 1, 16, HYPER_THREADING_PROC, 16, -1}, {17, 1, 1, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 1, 1, 18, HYPER_THREADING_PROC, 18, -1}, {19, 1, 1, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {21, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {22, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {23, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {24, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {25, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {26, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {27, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {28, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {29, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {30, 1, 1, 10, MAIN_CORE_PROC, 10, -1},       {31, 1, 1, 11, MAIN_CORE_PROC, 11, -1},
        {32, 1, 1, 12, MAIN_CORE_PROC, 12, -1},       {33, 1, 1, 13, MAIN_CORE_PROC, 13, -1},
        {34, 1, 1, 14, MAIN_CORE_PROC, 14, -1},       {35, 1, 1, 15, MAIN_CORE_PROC, 15, -1},
        {36, 1, 1, 16, MAIN_CORE_PROC, 16, -1},       {37, 1, 1, 17, MAIN_CORE_PROC, 17, -1},
        {38, 1, 1, 18, MAIN_CORE_PROC, 18, -1},       {39, 1, 1, 19, MAIN_CORE_PROC, 19, -1},
    },
    {
        {"0,20", "0", "3000000"},  {"1,21", "0", "3000000"},  {"2,22", "0", "3000000"},  {"3,23", "0", "3000000"},
        {"4,24", "0", "3000000"},  {"5,25", "0", "3000000"},  {"6,26", "0", "3000000"},  {"7,27", "0", "3000000"},
        {"8,28", "0", "3000000"},  {"9,29", "0", "3000000"},  {"10,30", "1", "3000000"}, {"11,31", "1", "3000000"},
        {"12,32", "1", "3000000"}, {"13,33", "1", "3000000"}, {"14,34", "1", "3000000"}, {"15,35", "1", "3000000"},
        {"16,36", "1", "3000000"}, {"17,37", "1", "3000000"}, {"18,38", "1", "3000000"}, {"19,39", "1", "3000000"},
        {"0,20", "0", "3000000"},  {"1,21", "0", "3000000"},  {"2,22", "0", "3000000"},  {"3,23", "0", "3000000"},
        {"4,24", "0", "3000000"},  {"5,25", "0", "3000000"},  {"6,26", "0", "3000000"},  {"7,27", "0", "3000000"},
        {"8,28", "0", "3000000"},  {"9,29", "0", "3000000"},  {"10,30", "1", "3000000"}, {"11,31", "1", "3000000"},
        {"12,32", "1", "3000000"}, {"13,33", "1", "3000000"}, {"14,34", "1", "3000000"}, {"15,35", "1", "3000000"},
        {"16,36", "1", "3000000"}, {"17,37", "1", "3000000"}, {"18,38", "1", "3000000"}, {"19,39", "1", "3000000"},
    },
    {{"0-9,20-29"}, {"10-19,30-39"}},
};
LinuxCpuMapTestCase freq_2sockets_20cores_hyperthreading_1 = {
    40,
    2,
    2,
    20,
    {{40, 20, 0, 20, -1, -1}, {20, 10, 0, 10, 0, 0}, {20, 10, 0, 10, 1, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 1, 1, 10, HYPER_THREADING_PROC, 10, -1}, {11, 1, 1, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 1, 1, 12, HYPER_THREADING_PROC, 12, -1}, {13, 1, 1, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 1, 1, 14, HYPER_THREADING_PROC, 14, -1}, {15, 1, 1, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 1, 1, 16, HYPER_THREADING_PROC, 16, -1}, {17, 1, 1, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 1, 1, 18, HYPER_THREADING_PROC, 18, -1}, {19, 1, 1, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {21, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {22, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {23, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {24, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {25, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {26, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {27, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {28, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {29, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {30, 1, 1, 10, MAIN_CORE_PROC, 10, -1},       {31, 1, 1, 11, MAIN_CORE_PROC, 11, -1},
        {32, 1, 1, 12, MAIN_CORE_PROC, 12, -1},       {33, 1, 1, 13, MAIN_CORE_PROC, 13, -1},
        {34, 1, 1, 14, MAIN_CORE_PROC, 14, -1},       {35, 1, 1, 15, MAIN_CORE_PROC, 15, -1},
        {36, 1, 1, 16, MAIN_CORE_PROC, 16, -1},       {37, 1, 1, 17, MAIN_CORE_PROC, 17, -1},
        {38, 1, 1, 18, MAIN_CORE_PROC, 18, -1},       {39, 1, 1, 19, MAIN_CORE_PROC, 19, -1},
    },
    {
        {"0,20", "0", "3000000"},  {"1,21", "0", "3000000"},  {"2,22", "0", "3000000"},  {"3,23", "0", "3000000"},
        {"4,24", "0", "3000000"},  {"5,25", "0", "3000000"},  {"6,26", "0", "3000000"},  {"7,27", "0", "3000000"},
        {"8,28", "0", "3000000"},  {"9,29", "0", "3000000"},  {"10,30", "1", "3000000"}, {"11,31", "1", "3000000"},
        {"12,32", "1", "3000000"}, {"13,33", "1", "3000000"}, {"14,34", "1", "3000000"}, {"15,35", "1", "3000000"},
        {"16,36", "1", "3000000"}, {"17,37", "1", "3000000"}, {"18,38", "1", "3000000"}, {"19,39", "1", "3000000"},
        {"0,20", "0", "3000000"},  {"1,21", "0", "3000000"},  {"2,22", "0", "3000000"},  {"3,23", "0", "3000000"},
        {"4,24", "0", "3000000"},  {"5,25", "0", "3000000"},  {"6,26", "0", "3000000"},  {"7,27", "0", "3000000"},
        {"8,28", "0", "3000000"},  {"9,29", "0", "3000000"},  {"10,30", "1", "3000000"}, {"11,31", "1", "3000000"},
        {"12,32", "1", "3000000"}, {"13,33", "1", "3000000"}, {"14,34", "1", "3000000"}, {"15,35", "1", "3000000"},
        {"16,36", "1", "3000000"}, {"17,37", "1", "3000000"}, {"18,38", "1", "3000000"}, {"19,39", "1", "3000000"},
    },
    {},
};
LinuxCpuMapTestCase freq_2sockets_20cores = {
    20,
    2,
    2,
    20,
    {{20, 20, 0, 0, -1, -1}, {10, 10, 0, 0, 0, 0}, {10, 10, 0, 0, 1, 1}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},    {1, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 2, -1},    {3, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {4, 0, 0, 4, MAIN_CORE_PROC, 4, -1},    {5, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {6, 0, 0, 6, MAIN_CORE_PROC, 6, -1},    {7, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {8, 0, 0, 8, MAIN_CORE_PROC, 8, -1},    {9, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {10, 1, 1, 10, MAIN_CORE_PROC, 10, -1}, {11, 1, 1, 11, MAIN_CORE_PROC, 11, -1},
        {12, 1, 1, 12, MAIN_CORE_PROC, 12, -1}, {13, 1, 1, 13, MAIN_CORE_PROC, 13, -1},
        {14, 1, 1, 14, MAIN_CORE_PROC, 14, -1}, {15, 1, 1, 15, MAIN_CORE_PROC, 15, -1},
        {16, 1, 1, 16, MAIN_CORE_PROC, 16, -1}, {17, 1, 1, 17, MAIN_CORE_PROC, 17, -1},
        {18, 1, 1, 18, MAIN_CORE_PROC, 18, -1}, {19, 1, 1, 19, MAIN_CORE_PROC, 19, -1},
    },
    {
        {"0", "0", "3000000"},  {"1", "0", "3000000"},  {"2", "0", "3000000"},  {"3", "0", "3000000"},
        {"4", "0", "3000000"},  {"5", "0", "3000000"},  {"6", "0", "3000000"},  {"7", "0", "3000000"},
        {"8", "0", "3000000"},  {"9", "0", "3000000"},  {"10", "1", "3000000"}, {"11", "1", "3000000"},
        {"12", "1", "3000000"}, {"13", "1", "3000000"}, {"14", "1", "3000000"}, {"15", "1", "3000000"},
        {"16", "1", "3000000"}, {"17", "1", "3000000"}, {"18", "1", "3000000"}, {"19", "1", "3000000"},
    },
    {{"0-9"}, {"10-19"}},
};
LinuxCpuMapTestCase freq_1sockets_32cores_hyperthreading = {
    64,
    1,
    1,
    32,
    {{64, 32, 0, 32, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 0, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 0, 0, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 0, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 0, 0, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 0, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 0, 0, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 0, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 0, 0, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 0, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 0, 0, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 0, 0, 21, HYPER_THREADING_PROC, 21, -1},
        {22, 0, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 0, 0, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 0, 0, 24, HYPER_THREADING_PROC, 24, -1}, {25, 0, 0, 25, HYPER_THREADING_PROC, 25, -1},
        {26, 0, 0, 26, HYPER_THREADING_PROC, 26, -1}, {27, 0, 0, 27, HYPER_THREADING_PROC, 27, -1},
        {28, 0, 0, 28, HYPER_THREADING_PROC, 28, -1}, {29, 0, 0, 29, HYPER_THREADING_PROC, 29, -1},
        {30, 0, 0, 30, HYPER_THREADING_PROC, 30, -1}, {31, 0, 0, 31, HYPER_THREADING_PROC, 31, -1},
        {32, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {33, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {34, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {35, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {36, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {37, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {38, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {39, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {40, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {41, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {42, 0, 0, 10, MAIN_CORE_PROC, 10, -1},       {43, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {44, 0, 0, 12, MAIN_CORE_PROC, 12, -1},       {45, 0, 0, 13, MAIN_CORE_PROC, 13, -1},
        {46, 0, 0, 14, MAIN_CORE_PROC, 14, -1},       {47, 0, 0, 15, MAIN_CORE_PROC, 15, -1},
        {48, 0, 0, 16, MAIN_CORE_PROC, 16, -1},       {49, 0, 0, 17, MAIN_CORE_PROC, 17, -1},
        {50, 0, 0, 18, MAIN_CORE_PROC, 18, -1},       {51, 0, 0, 19, MAIN_CORE_PROC, 19, -1},
        {52, 0, 0, 20, MAIN_CORE_PROC, 20, -1},       {53, 0, 0, 21, MAIN_CORE_PROC, 21, -1},
        {54, 0, 0, 22, MAIN_CORE_PROC, 22, -1},       {55, 0, 0, 23, MAIN_CORE_PROC, 23, -1},
        {56, 0, 0, 24, MAIN_CORE_PROC, 24, -1},       {57, 0, 0, 25, MAIN_CORE_PROC, 25, -1},
        {58, 0, 0, 26, MAIN_CORE_PROC, 26, -1},       {59, 0, 0, 27, MAIN_CORE_PROC, 27, -1},
        {60, 0, 0, 28, MAIN_CORE_PROC, 28, -1},       {61, 0, 0, 29, MAIN_CORE_PROC, 29, -1},
        {62, 0, 0, 30, MAIN_CORE_PROC, 30, -1},       {63, 0, 0, 31, MAIN_CORE_PROC, 31, -1},
    },
    {
        {"0,32", "0", "3400000"},  {"1,33", "0", "3400000"},  {"2,34", "0", "3400000"},  {"3,35", "0", "3400000"},
        {"4,36", "0", "3400000"},  {"5,37", "0", "3400000"},  {"6,38", "0", "3400000"},  {"7,39", "0", "3400000"},
        {"8,40", "0", "3400000"},  {"9,41", "0", "3400000"},  {"10,42", "0", "3400000"}, {"11,43", "0", "3400000"},
        {"12,44", "0", "3400000"}, {"13,45", "0", "3400000"}, {"14,46", "0", "3400000"}, {"15,47", "0", "3400000"},
        {"16,48", "0", "3400000"}, {"17,49", "0", "3400000"}, {"18,50", "0", "3400000"}, {"19,51", "0", "3400000"},
        {"20,52", "0", "3400000"}, {"21,53", "0", "3400000"}, {"22,54", "0", "3400000"}, {"23,55", "0", "3400000"},
        {"24,56", "0", "3400000"}, {"25,57", "0", "3400000"}, {"26,58", "0", "3400000"}, {"27,59", "0", "3400000"},
        {"28,60", "0", "3400000"}, {"29,61", "0", "3400000"}, {"30,62", "0", "3400000"}, {"31,63", "0", "3400000"},
        {"0,32", "0", "3400000"},  {"1,33", "0", "3400000"},  {"2,34", "0", "3400000"},  {"3,35", "0", "3400000"},
        {"4,36", "0", "3400000"},  {"5,37", "0", "3400000"},  {"6,38", "0", "3400000"},  {"7,39", "0", "3400000"},
        {"8,40", "0", "3400000"},  {"9,41", "0", "3400000"},  {"10,42", "0", "3400000"}, {"11,43", "0", "3400000"},
        {"12,44", "0", "3400000"}, {"13,45", "0", "3400000"}, {"14,46", "0", "3400000"}, {"15,47", "0", "3400000"},
        {"16,48", "0", "3400000"}, {"17,49", "0", "3400000"}, {"18,50", "0", "3400000"}, {"19,51", "0", "3400000"},
        {"20,52", "0", "3400000"}, {"21,53", "0", "3400000"}, {"22,54", "0", "3400000"}, {"23,55", "0", "3400000"},
        {"24,56", "0", "3400000"}, {"25,57", "0", "3400000"}, {"26,58", "0", "3400000"}, {"27,59", "0", "3400000"},
        {"28,60", "0", "3400000"}, {"29,61", "0", "3400000"}, {"30,62", "0", "3400000"}, {"31,63", "0", "3400000"},
    },
    {{"0-63"}},
};
LinuxCpuMapTestCase freq_1sockets_16cores_hyperthreading = {
    24,
    1,
    1,
    16,
    {{24, 8, 8, 8, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},   {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},   {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},   {5, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},   {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {8, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},   {9, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {10, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},  {11, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {12, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},  {13, 0, 0, 6, MAIN_CORE_PROC, 6, -1},
        {14, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},  {15, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {16, 0, 0, 8, EFFICIENT_CORE_PROC, 8, -1},   {17, 0, 0, 9, EFFICIENT_CORE_PROC, 9, -1},
        {18, 0, 0, 10, EFFICIENT_CORE_PROC, 10, -1}, {19, 0, 0, 11, EFFICIENT_CORE_PROC, 11, -1},
        {20, 0, 0, 12, EFFICIENT_CORE_PROC, 12, -1}, {21, 0, 0, 13, EFFICIENT_CORE_PROC, 13, -1},
        {22, 0, 0, 14, EFFICIENT_CORE_PROC, 14, -1}, {23, 0, 0, 15, EFFICIENT_CORE_PROC, 15, -1},
    },
    {
        {"0-1", "0", "5376760"},   {"0-1", "0", "5376760"},   {"2-3", "0", "5376760"},   {"2-3", "0", "5376760"},
        {"4-5", "0", "5376760"},   {"4-5", "0", "5376760"},   {"6-7", "0", "5376760"},   {"6-7", "0", "5376760"},
        {"8-9", "0", "5400000"},   {"8-9", "0", "5400000"},   {"10-11", "0", "5400000"}, {"10-11", "0", "5400000"},
        {"12-13", "0", "5376760"}, {"12-13", "0", "5376760"}, {"14-15", "0", "5376760"}, {"14-15", "0", "5376760"},
        {"16", "0", "4200000"},    {"17", "0", "4200000"},    {"18", "0", "4200000"},    {"19", "0", "4200000"},
        {"20", "0", "4200000"},    {"21", "0", "4200000"},    {"22", "0", "4200000"},    {"23", "0", "4200000"},
    },
    {},
};
LinuxCpuMapTestCase freq_1sockets_16cores = {
    16,
    1,
    1,
    16,
    {{16, 8, 8, 0, 0, 0}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {1, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {3, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {4, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {5, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {6, 0, 0, 6, MAIN_CORE_PROC, 6, -1},
        {7, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {8, 0, 0, 8, EFFICIENT_CORE_PROC, 8, -1},
        {9, 0, 0, 9, EFFICIENT_CORE_PROC, 9, -1},
        {10, 0, 0, 10, EFFICIENT_CORE_PROC, 10, -1},
        {11, 0, 0, 11, EFFICIENT_CORE_PROC, 11, -1},
        {12, 0, 0, 12, EFFICIENT_CORE_PROC, 12, -1},
        {13, 0, 0, 13, EFFICIENT_CORE_PROC, 13, -1},
        {14, 0, 0, 14, EFFICIENT_CORE_PROC, 14, -1},
        {15, 0, 0, 15, EFFICIENT_CORE_PROC, 15, -1},
    },
    {
        {"0", "0", "5376760"},
        {"1", "0", "5376760"},
        {"2", "0", "5376760"},
        {"3", "0", "5376760"},
        {"4", "0", "5400000"},
        {"5", "0", "5400000"},
        {"6", "0", "5376760"},
        {"7", "0", "5376760"},
        {"8", "0", "4200000"},
        {"9", "0", "4200000"},
        {"10", "0", "4200000"},
        {"11", "0", "4200000"},
        {"12", "0", "4200000"},
        {"13", "0", "4200000"},
        {"14", "0", "4200000"},
        {"15", "0", "4200000"},
    },
    {{"0-15"}},
};
LinuxCpuMapTestCase freq_1sockets_16cores_1_hyperthreading = {
    22,
    1,
    1,
    16,
    {{22, 6, 10, 6, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},   {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},   {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},   {5, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},   {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {8, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},   {9, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {10, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},  {11, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {12, 0, 0, 6, EFFICIENT_CORE_PROC, 6, -1},   {13, 0, 0, 7, EFFICIENT_CORE_PROC, 7, -1},
        {14, 0, 0, 8, EFFICIENT_CORE_PROC, 8, -1},   {15, 0, 0, 9, EFFICIENT_CORE_PROC, 9, -1},
        {16, 0, 0, 10, EFFICIENT_CORE_PROC, 10, -1}, {17, 0, 0, 11, EFFICIENT_CORE_PROC, 11, -1},
        {18, 0, 0, 12, EFFICIENT_CORE_PROC, 12, -1}, {19, 0, 0, 13, EFFICIENT_CORE_PROC, 13, -1},
        {20, 0, 0, 14, EFFICIENT_CORE_PROC, 14, -1}, {21, 0, 0, 15, EFFICIENT_CORE_PROC, 15, -1},
    },
    {
        {"0-1", "2", "3200040"}, {"0-1", "2", "3200040"}, {"2-3", "3", "3200040"},   {"2-3", "3", "3200040"},
        {"4-5", "4", "3200040"}, {"4-5", "4", "3200040"}, {"6-7", "5", "3200040"},   {"6-7", "5", "3200040"},
        {"8-9", "6", "3200040"}, {"8-9", "6", "3200040"}, {"10-11", "7", "3200040"}, {"10-11", "7", "3200040"},
        {"12", "0", "3100000"},  {"13", "0", "3100000"},  {"14", "0", "3100000"},    {"15", "0", "3100000"},
        {"16", "1", "3100000"},  {"17", "1", "3100000"},  {"18", "1", "3100000"},    {"19", "1", "3100000"},
        {"20", "8", "1600011"},  {"21", "8", "1600011"},
    },
    {},
};
LinuxCpuMapTestCase freq_1sockets_12cores_hyperthreading = {
    14,
    1,
    1,
    12,
    {{14, 2, 10, 2, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},
        {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {4, 0, 0, 2, EFFICIENT_CORE_PROC, 2, -1},
        {5, 0, 0, 3, EFFICIENT_CORE_PROC, 3, -1},
        {6, 0, 0, 4, EFFICIENT_CORE_PROC, 4, -1},
        {7, 0, 0, 5, EFFICIENT_CORE_PROC, 5, -1},
        {8, 0, 0, 6, EFFICIENT_CORE_PROC, 6, -1},
        {9, 0, 0, 7, EFFICIENT_CORE_PROC, 7, -1},
        {10, 0, 0, 8, EFFICIENT_CORE_PROC, 8, -1},
        {11, 0, 0, 9, EFFICIENT_CORE_PROC, 9, -1},
        {12, 0, 0, 10, EFFICIENT_CORE_PROC, 10, -1},
        {13, 0, 0, 11, EFFICIENT_CORE_PROC, 11, -1},
    },
    {
        {"0-1", "2", "4100000"},
        {"0-1", "2", "4100000"},
        {"2-3", "3", "4100000"},
        {"2-3", "3", "4100000"},
        {"4", "0", "3100000"},
        {"5", "0", "3100000"},
        {"6", "0", "3100000"},
        {"7", "0", "3100000"},
        {"8", "1", "3100000"},
        {"9", "1", "3100000"},
        {"10", "1", "3100000"},
        {"11", "1", "3100000"},
        {"12", "8", "2100000"},
        {"13", "8", "2100000"},
    },
    {{"0-13"}},
};
LinuxCpuMapTestCase freq_1sockets_8cores_hyperthreading = {
    16,
    1,
    1,
    8,
    {{16, 8, 0, 8, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},
        {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},
        {5, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {8, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},
        {9, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {10, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {11, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {12, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},
        {13, 0, 0, 6, MAIN_CORE_PROC, 6, -1},
        {14, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {15, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
    },
    {
        {"0-1", "0", "6100000"},
        {"0-1", "0", "6100000"},
        {"2-3", "0", "6100000"},
        {"2-3", "0", "6100000"},
        {"4-5", "0", "6100000"},
        {"4-5", "0", "6100000"},
        {"6-7", "0", "6100000"},
        {"6-7", "0", "6100000"},
        {"8-9", "0", "6300000"},
        {"8-9", "0", "6300000"},
        {"10-11", "0", "6300000"},
        {"10-11", "0", "6300000"},
        {"12-13", "0", "6100000"},
        {"12-13", "0", "6100000"},
        {"14-15", "0", "6100000"},
        {"14-15", "0", "6100000"},
    },
    {},
};
LinuxCpuMapTestCase freq_1sockets_8cores_hyperthreading_1 = {
    16,
    1,
    1,
    8,
    {{16, 8, 0, 8, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},
        {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},
        {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},
        {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},
        {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {9, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {10, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {11, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {12, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {13, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {14, 0, 0, 6, MAIN_CORE_PROC, 6, -1},
        {15, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
    },
    {
        {"0,8", "0", "4700000"},
        {"1,9", "0", "4800000"},
        {"2,10", "0", "4800000"},
        {"3,11", "0", "4700000"},
        {"4,12", "0", "4700000"},
        {"5,13", "0", "4700000"},
        {"6,14", "0", "4700000"},
        {"7,15", "0", "4700000"},
        {"0,8", "0", "4700000"},
        {"1,9", "0", "4800000"},
        {"2,10", "0", "4800000"},
        {"3,11", "0", "4700000"},
        {"4,12", "0", "4700000"},
        {"5,13", "0", "4700000"},
        {"6,14", "0", "4700000"},
        {"7,15", "0", "4700000"},
    },
    {{"0-15"}},
};
LinuxCpuMapTestCase freq_1sockets_4cores = {
    4,
    1,
    1,
    4,
    {{4, 4, 0, 0, 0, 0}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {1, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {3, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
    },
    {
        {"0", "0", "1800000"},
        {"1", "0", "1800000"},
        {"2", "0", "1800000"},
        {"3", "0", "1800000"},
    },
    {},
};

LinuxCpuMapTestCase freq_1sockets_4cores_2 = {
    0,
    0,
    0,
    0,
    {},
    {},
    {
        {"0-3", "-1", "1848000"},
        {"0-3", "-1", "1848000"},
        {"0-3", "-1", "1848000"},
        {"0-3", "-1", "1848000"},
    },
    {},
};

TEST_P(LinuxCpuMapFreqParserTests, LinuxFreq) {}

INSTANTIATE_TEST_SUITE_P(CPUMap,
                         LinuxCpuMapFreqParserTests,
                         testing::Values(freq_2sockets_112cores_hyperthreading,
                                         freq_2sockets_48cores_hyperthreading,
                                         freq_2sockets_48cores_hyperthreading_1,
                                         freq_2sockets_24cores_hyperthreading,
                                         freq_2sockets_24cores_hyperthreading_1,
                                         freq_2sockets_20cores_hyperthreading,
                                         freq_2sockets_20cores_hyperthreading_1,
                                         freq_2sockets_20cores,
                                         freq_1sockets_32cores_hyperthreading,
                                         freq_1sockets_16cores_hyperthreading,
                                         freq_1sockets_16cores,
                                         freq_1sockets_16cores_1_hyperthreading,
                                         freq_1sockets_12cores_hyperthreading,
                                         freq_1sockets_8cores_hyperthreading,
                                         freq_1sockets_8cores_hyperthreading_1,
                                         freq_1sockets_4cores,
                                         freq_1sockets_4cores_2));

#endif
}  // namespace